package Thread;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
//https://www.cnblogs.com/linkworld/p/7819270.html
public class ThreadCommunicate {
    //线程通信 建立在同步的基础上
    public static void main(String[] args) {

        //同步方法块
        //1.生产者消费者不是同一个商品 --私有化产品 构造函数传入
        //2.生产者没有完成一个生产周期 消费者就消费 消费了半成品 --消费者生产者一起对产品加锁
        //3.出现了供不应求或者供过于求  --仓库满 生产者通知(notify)消费者 然后等待(wait会释放锁)||仓库空 消费者通知(notify)生产者 然后等待(wait)
        //wait和notify都只能是Synchronize锁住的对象调用  notify唤醒锁住对象的等待队列 wait必须有锁才能调用

        //同步方法
        //在产品中实现生产消费  对this上锁

        //lock锁实现通信 一个同步队列 多个等待队列
        //把Synchronize变为lock.lock()
        //wait变为:lock.newCondition().await(); //消费者生产者各有Condition
        //notify变为:lock.newCondition().signal();

    }
}




























